﻿using LeRenard.Libraries.Templating.Templating.Mapping;
using System.Collections.Generic;

namespace LeRenard.Libraries.Templating.Templating
{
    /// <summary>
    /// Defines a template.
    /// </summary>
    public interface ITemplate
    {
        /// <summary>
        /// Gets the raw template string, containing the placeholders.
        /// </summary>
        string TemplateString { get; }

        /// <summary>
        /// Gets all mappings defined for this template.
        /// </summary>
        IEnumerable<ITemplateMapping> TemplateMappings { get; }

        /// <summary>
        /// Adds a <see cref="ITemplateMapping"/> to the <see cref="ITemplate"/>.
        /// </summary>
        /// <param name="templateMapping">The template to be added.</param>
        void AddMapping(ITemplateMapping templateMapping);
    }
}
